結合大型語言模型(LLM)與企業內部大數據文件,建構檢索增強生成(RAG)問答系統,快速存取與回應知識。
目標
將非結構化文件(PDF、Word)轉為可處理格式。
技術:pdfplumber
, unstructured
, pandas
流程圖描述:
PDF / Word → 解析文字 → 清理 → 分段 → 存入資料表
import pdfplumber
with pdfplumber.open("manual.pdf") as pdf:
text = "".join(page.extract_text() for page in pdf.pages)
目標
將文件嵌入向量空間以便檢索。
技術:ChromaDB
, FAISS
, OpenAI Embeddings
流程圖描述:
文字段落 → 產生向量 → 存入資料庫 → 提供檢索 API
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
emb = OpenAIEmbeddings()
db = FAISS.from_texts(text.split("\n"), embedding=emb)
目標
整合檢索與 LLM 進行問答。
技術:langchain
, ChatOpenAI
流程圖描述:
問題 → 檢索相關文件 → 串接文件 + 問題 → 丟入 LLM → 產出答案
from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI
qa = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4o"),
retriever=db.as_retriever()
)
print(qa.run("請說明公司的差勤規範"))
目標
確保知識庫資料安全與控管。
技術:OAuth2、RBAC、FastAPI
流程圖描述:
使用者登入 → Token 驗證 → 判斷角色 → 回傳檢索結果
from fastapi import Depends
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/search")
async def search(q: str, token: str = Depends(oauth2_scheme)):
return {"answer": qa.run(q)}
結論與效益
員工可快速存取內部知識,減少尋找文件時間,大幅提升生產力。